Class RRRRWWWWvvvvoooossssttttrrrreeeeaaaammmm is an abstract base class. It provides an interface for
format-independent storage of fundamental types and arrays of fundamental
types. Its counterpart, RRRRWWWWvvvviiiissssttttrrrreeeeaaaammmm, provides a complementary interface
for the retrieval of variables of the fundamental types. Because the
interface of RRRRWWWWvvvviiiissssttttrrrreeeeaaaammmm and RRRRWWWWvvvvoooossssttttrrrreeeeaaaammmm is independent of formatting, the
user of these classes need not be concerned with how variables will
actually be stored or restored. That will be up to the derived class to
decide. It might be done using an operating-system independent ASCII
format (classes RRRRWWWWppppiiiissssttttrrrreeeeaaaammmm and RRRRWWWWppppoooossssttttrrrreeeeaaaammmm), a binary format (classes
RRRRWWWWbbbbiiiissssttttrrrreeeeaaaammmm and RRRRWWWWbbbboooossssttttrrrreeeeaaaammmm), or the user could define his or her own
format (eeee....gggg...., an interface to a network). Note that because it is an
aaaabbbbssssttttrrrraaaacccctttt base class, there is no way to actually enforce these goals --
the description here is merely the model of how a class derived from
RRRRWWWWvvvviiiissssttttrrrreeeeaaaammmm and RRRRWWWWvvvvoooossssttttrrrreeeeaaaammmm should act. NNNNooootttteeee tttthhhhaaaatttt tttthhhheeeerrrreeee iiiissss nnnnoooo nnnneeeeeeeedddd ttttoooo
sssseeeeppppaaaarrrraaaatttteeee vvvvaaaarrrriiiiaaaabbbblllleeeessss wwwwiiiitttthhhh wwwwhhhhiiiitttteeeessssppppaaaacccceeee. It is the responsibility of the
derived class to delineate variables with whitespace, packet breaks, or
whatever might be appropriate for the final output sink. The model is
one where variables are inserted into the output stream, either
individually or as homogeneous vectors, to be restored in the same order
using RRRRWWWWvvvviiiissssttttrrrreeeeaaaammmm. Storage and retrieval of characters requires some
explanation. Characters can be thought of as either representing some
alphanumeric or control character, or as the literal number. Generally,
the overloaded insertion (<<) and extraction (>>) operators seek to store
and restore characters preserving their symbolic meaning. That is,
storage of a newline should be restored as a newline, regardless of its
representation on the target machine. By contrast, member functions
ggggeeeetttt(((()))) and ppppuuuutttt(((()))) should treat the character as a literal number, whose
value is to be preserved. See also class RRRRWWWWppppoooossssttttrrrreeeeaaaammmm.